import axios from "axios"
import router from "../router/index"
import ElementUI from "element-ui"
const service = axios.create({
    // baseURL: "/api",
    withCredentials: true, //运行可带携带认证给服务器，将cookie传递给服务器
    timeout: 1000 * 10 //请求不超过10秒
})

//请求拦截器
//所有请求必须通过这个函数
service.interceptors.request.use(function(config) {
    //登入请求 获取验证码请求不需要携带token
    let accessPath = ["/user/getCaptcha", "/users/login"]
    let r = accessPath.some(item => config.url === item)
    if (r) { //不需要携带token
        return config //放行

    } else {
        let token = localStorage.getItem("qf-token")
        config.headers['authorization'] = token
        return config
    }
    // console.log(config);
})

//未登入状态的code是10022 校验失败的code是1004
//响应拦截器
service.interceptors.response.use(function(config) {
    // console.log(config);
    //如果是响应验证码就不需要拦截
    //如果响应的状态是10022或者1004 那么需要跳转到登录页
    let regExp = /^\/users\/verifyCaptcha.+/
    let { url } = config.config
    if (url === "/users/getCaptcha" || regExp.test(url) || url === "/login") {
        console.log(621);
        return config
    } else {
        if (config.data.code === "10022" || config.data.code === "1004") {
            //如果响应的状态是10022或者1004 那么需要跳转到登入页
            ElementUI.Message.error("登录过期，请重新登录！！！")
            router.push("/login")
            localStorage.removeItem('yf-token')
                // console.log(ElementUI);
        } else {
            return config
        }
    }
})

export default service